В прошлой статье мы начали обсуждать вопрос как очистить и оптимизировать базу данных Joomla 3. Сегодня продолжим эту обширную тему и поговорим о том, как очистить базу данных от ненужных и неиспользуемых таблиц, которые могут остаться после удаления расширений.
Как удалять расширения и очистить сайт от мусора мы говорили в одной из предыдущих статей. Однако мы не трогали базу данных и не проверяли её на наличие таблиц оставшихся после удаления тех самых расширений.
В рамках данной статьи я не буду рассматривать все возможные расширения и их таблицы, для понимания сути будет вполне достаточно пары примеров. И одним из таких наиболее ярких примеров это стандартное расширение Joomla 3 под названием «Умный поиск», которое способно раздуть базу данных просто до невероятных размеров. Как раз о нем и пойдет речь в данной статье, а попутно поговорим о других расширениях, таблицы или упоминания о которых остаются в базе данных даже после их удаления.
Умный поиск и куча таблиц в базе данных
Как уже было сказано есть в стандартном наборе Joomla такое расширение как «Умный поиск», в состав которого входят плагины, модуль и компонент. Суть его заключается в том, что пользователь при поиске необходимой информации набирает несколько букв искомой фразы, а умный поиск предлагает несколько возможных вариантов тем самым сокращает время, потраченное на поиск.
Все бы хорошо, вещь то вроде полезная, но для функционирования данного расширения требуется предварительная индексация сайта, после чего в базу данных заносится огромное количество ключевых слов. В результате такого подхода со временем накапливается просто невероятное количество записей в таблицах базы данных и её размер просто удивляет. Для того чтобы не быть голословным покажу конкретный пример того как может быть раздута база данных Joomla если Вы начнете использовать умный поиск:
Впечатляет, не так ли? Размер таблицы с материалами составляет 1.6 Мб, а размер таблиц умного поиска таков:
Имя таблицы | Размер, Мб |
jos_finder_terms | 22,6 |
jos_finder_links_terms* (все возможные таблицы) | 9 |
jos_finder_links | 1,6 |
Прочие (jos_finder_taxonomy, jos_finder_taxonomy_map, jos_finder_tokens и т.д.) | 1 |
В результате совершенно все материалы (которых порядка 40 штук) занимают 1.6 мегабайт пространства, а размер проиндексированных данных для умного поиска превышает 34 мегабайта. Получается, что размер базы данных более чем на 95% состоит из ненужных данных, которыми и пользуются то далеко не все.
Использовать или нет «Умный поиск» дело конечно каждого, но если Вы не желаете получить в конечном итоге подобный результат, то советую от него избавиться. Как удалить данное расширение понятно (если не понятно прочитайте данную статью), а как быть с вышеупомянутыми таблицами, которые могут (не всегда, но могут) остаться в базе данных и сами по себе никуда оттуда не денутся это уже вопрос, на который я попытаюсь ответить.
Итак, приступим, для начала удаляем всех представителей расширения «Умный поиск» (плагины, компонент и модуль). Так как база данных у нас в MySQL переходим в phpMyAdmin и находим все связанные с умным поиском таблицы (25 штук), их найти не трудно, у каждой таблицы в имени присутствует слово _ finder. Если кому-то страшно это делать, то для начала экспортируйте их на всякий случай (мало ли чего произойдет).
Хочу обратить внимание, когда будите выделять таблицы для последующего удаления, внимательно смотрите на их имена, вполне возможно, что Вы случайно зацепите таблицы с именем _fields*, которые не имеют никакого отношения к «Умному поиску».
Выделили все таблицы и в самом низу страницы в выпадающем списке «С отмеченными» выбираем «Удалить»:
После этого у Вас уточнят – а действительно ли нужно удалить данные таблицы? На этот вопрос надо ответить положительно:
И снова небольшая заметка, не стоит удалять таблицы с базы данных до того как будет удалено само расширение, это может повлечь за собой некоторые проблемы.
Все, на этом мы избавились от «Умного поиска» и от его таблиц в базе данных, но это еще не конец. Дело в том, что в Joomla 3 существует проверка на наличие подобных стандартных таблиц, и если Вы теперь зайдете в панель управления и перейдете в раздел проверки базы данных (Расширения -> Менеджер расширений -> База данных), то увидите следующую картину:
Как я и говорил это результат встроенной проверки на отсутствие стандартных таблиц в базе данных. Ситуация конечно не приятная, но все же не такая уж и страшная. Все что нам потребуется для того чтобы избавиться от подобной неразберихи в панели управления это удалить либо очистить некоторые файлы Joomla.
Ни в коем случае не нажимайте на кнопку «Исправить» иначе все удаленные таблицы будут заново созданы и весь процесс придется повторять заново.
Файла всего четыре (если внимательно посмотреть на скриншот, то можно заметить имена нужных фалов):
- 3.0.0.sql
- 2.5.0-2011-12-23.sql
- 2.5.0-2011-12-21-2.sql
- 3.7.0-2017-03-19.sql
Найти данные файлы можно по адресу administrator/components/com_admin/sql/updates/mysql. Что с ними делать? Да ничего особенного – удалить или очистить. Какие файлы можно удалять (очищать), а какие только править смотрите в таблице:
Файл | Действия |
3.0.0.sql | Удалить строки, в которых содержится записи finder_ |
2.5.0-2011-12-23.sql | Удалить или очистить |
2.5.0-2011-12-21-2.sql | Удалить или очистить |
3.7.0-2017-03-19.sql | Удалить или очистить |
Во всех этих файлах, кроме первого речь идет исключительно о таблицах «Умного поиска», следовательно, их можно удалять с сервера полностью или очистить их содержимое. А вот файл 3.0.0.sql проверяет таблицы не только того самого умного поиска, но и другие. Конечно, можно удалить и его, но в этом случае Вы не будите получать сообщения об удаленных таблица других стандартных расширений. Поэтому вычищаем в нем только нужные записи.
Удалять много записей не придется, их относительно мало – 26 штук. Находятся они в строках 49-71 и 110-112 включительно.
После того как файлы были очищены можно снова зайти в панель управления и посмотреть как у нас дела с базой данных, все должно быть замечательно!
Точно таким же образом можно избавиться от проверки других несуществующих таблиц в базе данных Joomla 3, например, после удаления компонента «Баннеры» и прочих. Надо точно так же удалить строки с файла 3.0.0.sql, в которых имеются упоминания о таблицах этих расширений, например _banners для компонента баннеров и так далее. Ничего сложного нет!